草庐IT

c++ - 特化 std::make_shared

全部标签

c++ - 如何从多个静态库中创建一个静态库?

我们最近将一个C++项目从VisualStudio6转换到VisualStudio8。一切都很顺利,直到我们编译了一个将所有静态库放入一个大静态库中的项目。默认情况下,在两个版本的项目之间转换后,项目没有做任何事情(没有创建大的静态库,它只是说项目是最新的)。我们通过向项目添加一个虚拟(空)文件找到了一个可行的解决方案(之前在VisualStudio6解决方案中没有其他文件)。一切顺利,我们设法使用新的开发环境(VisualStudio8)编译项目。我的问题是:如果不向项目中添加虚拟文件,还有其他方法可以做到这一点吗?提前感谢您的回复 最佳答案

c++ - 在存储到 sqlite 上的记录时处理字符串中的特殊字符

在下面的代码中,我看到当我的“描述”是这样的:"''",我在更新sqlite记录的描述时遇到问题。我如何处理'字符。谢谢!sql=wxString::Format("UPDATEeventSETevent_description='%s'WHEREid=%d",description.c_str(),event_id);rc=sqlite3_exec((sqlite3*)_theDB,sql.c_str(),NULL,0,&sqlError);OP回答了他自己的问题:checkthisoutFAQweneedtoreplacetheoccurencesof'with''inthestr

c++ - 在结构内部编码结构的安全阵列

我在C++中有以下代码,我需要能够从C#调用它:structInner{doubledata1;doubledata2;};structOuter{doubledata3;SAFEARRAYinnerData;};intWINAPIProcessData(Outer&outer){...}我尝试了以下方法,但没有用我做错了什么?[StructLayoutAttribute(LayoutKind.Sequential)]publicstructInner{publicdoubledata1;publicdoubledata2;}[StructLayoutAttribute(LayoutK

c++ - 如何在可扩展存储引擎(JetBlue)中的 JetUpdate() 之后获取 AutoIncrement 值

在调用JetSetColumns()和JetUpdate()之后,我如何检索任何新分配的自动增量值的值? 最佳答案 当您调用JetUpdate()时,第三个参数是“书签”。JetUpdate()完成后,您可以使用查找书签JetGotoBookmark()-http://msdn.microsoft.com/en-us/library/ms683554(EXCHG.10).aspx 关于c++-如何在可扩展存储引擎(JetBlue)中的JetUpdate()之后获取AutoIncremen

c++ - 使用shared_ptr实现RCU(读取-复制-更新)?

我对用户空间RCU(读取-复制-更新)非常感兴趣,并尝试通过tr1::shared_ptr模拟一个,这是代码,虽然我真的是并发编程的新手,但会有高手帮我review吗?基本思路是,reader调用get_reading_copy()以获得当前protected数据的指针(假设它是第一代,或G1)。writer调用get_updating_copy()以获得G1的拷贝(假设它是G2),并且只允许一个writer进入临界区。更新完成后,writer调用update()进行交换,使m_data_ptr指向G2数据。正在进行的读者和作者现在持有G1的shared_ptr(s),并且读者或作者最

c++ - 如何让 boost::iostream 以类似于 std::ios::binary 的模式运行?

我有以下关于boost::iostreams的问题。如果有人熟悉编写过滤器,我将非常感谢您的建议/帮助。我正在编写一对多字符过滤器,它们与boost::iostream::filtering_stream一起用作数据压缩器和解压缩器。我从编写压缩器开始,从lz系列中学习了一些算法,现在正在研究解压缩器。简而言之,我的压缩器将数据拆分为数据包,这些数据包分别编码,然后刷新到我的文件中。当我必须从我的文件中恢复数据时(在编程术语中,接收一个read(byte_count)请求),我必须读取一个完整打包block,缓冲它,解压它,然后才给出请求的字节数。我已经实现了这个逻辑,但现在我正在努力

c++ - "constify" `std::pair` 的字段是否可以不被黑客攻击?

在C++中,编译如下代码:std::pairx;static_cast*>(&x);报错:error:invalidstatic_castfromtype‘std::pair*’totype‘std::pair*’我或多或少理解为什么会这样,因为在模板参数列表中对类型进行cv限定原则上可以给出“不兼容”的结果。即使在这种情况下它不知道,编译器也无法知道。无论如何,是否有一种非hackish的方式来执行此转换?我对使用reinterpret_cast持谨慎态度对于我之前遇到过的类型双关问题。另外,我不能使用临时变量,因为这是对性能至关重要的代码。编辑:这就是我正在做的。我正在实现与std

c++ - C/ObjC - 参数大小。使用指针与值

在什么时候我应该在我的函数/方法中传递一个指向数据的指针,而不是仅仅传递值?显然,在某些情况下我希望函数对给定数据进行操作,但如果我只是为了信息/复制目的传递值怎么办?例如,foo作为基本类型:voidsetFoo(intfoo);...intfoo=1;setFoo(foo);现在foo作为一个简单的结构:typedefstruct{intx;inty;}Foo;voidsetFoo(Foofoo);...Foofoo={1,2};setFoo(foo);//ApplecodedoesthiskindofthingwithCGSize,CGPoint...但是如果foo是一个更大的结

c++ - 并发空间上很酷的开源项目?

我正在C和C++并发编程空间中寻找很酷的开源项目,这些项目需要积极的开发人员贡献。我是领域中立的,但会更喜欢数学/统计相关领域的东西。任何提醒的人? 最佳答案 提升C++库集合我建议看一下boostC++librarycollection.有几个处理并发处理的有趣库,使用这些库将极大地提高您自己的通用和跨平台C++编程技能。他们的一些libraries与并发有关。boost的好处在于它分布广泛,并且是C++0x对C++标准的更新中出现的许多变化的源头,因此每一个贡献都会产生巨大的影响。接受的并发库-Boost.Interproces

c++ - 如何在执行应用程序时获取已用内存量

我查看了GDB文档,但没有找到任何有用的或显示我需要的东西:我的应用程序使用的最大内存量。如果相关的话,我正在使用MinGW-w64(适用于Windows的GCC)。我想要以编程方式进行某些操作,而不是“查看您的任务管理器”。另外:我的应用程序一次性执行,它不会在任何地方停止或暂停,我希望保持这种状态。谢谢! 最佳答案 你可以包装malloc/free或new/delete:How-to-profile-memory-usage-of-a-c-program因此您可以随时查看您正在使用多少内存(堆)。